package com.kznnc.data_structure.sort.two;

/**
 * @Description  冒泡排序
 *   核心思路:
 *   冒泡排序置灰操作相邻的两个数据. 每次冒泡操作都会对相邻的两个匀速进行比较.
 *   看是否满足大小关系要求.如果不满足就让他们两进行互换
 *   一次冒泡会让至少一个元素移动到她应该在的位置, 重复n此, 就完成了n个数据的排序工作
 *
 *
 *      优化点:
 *    当冒泡排序排序中 有一次冒泡没有交换的时候  说明所有元素都在自己应该在的位置(已经排好序了)
 * @Author houchenkai
 * @Created Date: 2021/7/12 11:19
 * @ClassName
 */
public class BubbleSort {

    public static void main(String[] args) {

        int[] data = {4,5,6,3,2,1};
        int n = data.length;
        // 冒泡的次数
        for (int i = 0; i < n - 1; i++) {
            boolean flag = false;
            for (int j = 0; j < n - 1 - i; j++) {
                if (data[j] >data[j+1]){
                    int temp = data[j];
                    data[j] =data[j+1];
                    data[j+1] =temp;
                    flag = true;
                }
            }
            if (!flag){
                break;
            }
        }

    }

}
